package core

import (
	"fmt"
	"giv-vue-blog/config"
	"giv-vue-blog/global"
	"gopkg.in/yaml.v2"
	"io/ioutil"
	"log"
)

/*
	本项目采用yaml文件格式存储配置,使用yaml.v2和ioutil这个包进行读取配置文件,修改配置文件,格式化文件
	后期可以考虑使用viper来管理配置文件
*/
const ConfigFile = "settings.yaml" //yaml文件路径
//InitConf 读取yaml配置文件
func InitConf() {
	//const ConfigFile = "settings.yaml" //yaml文件路径
	c := &config.Config{}
	yamlConf, err := ioutil.ReadFile(ConfigFile) //读取yaml配置文件
	if err != nil {
		panic(fmt.Errorf("get yamlconf error: %s", err))
	}
	err = yaml.Unmarshal(yamlConf, c) //yaml文件反序列化
	if err != nil {
		panic(fmt.Errorf("config init Unmarsharl: %v", err))
	}
	log.Println("config yamlFile load init success")
	global.Config = c //最终将读取到的配置文件赋值到全局的配置文件中
}

//SetYaml 实现修改settings.yaml配置文件
func SetYaml() error {
	bytedata, err := yaml.Marshal(global.Config) //先将整个配置文件序列化为[]byte类型，然后读取配置文件
	if err != nil {
		return err
	}
	err = ioutil.WriteFile(ConfigFile, bytedata, 0777)
	if err != nil {
		return err
	}
	global.Log.Info("修改成功")
	return nil
}
